import { fileURLToPath } from 'node:url'
import { resolve } from 'node:path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite' // 自动引入组件
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers' // 自动引入antd组件，antd-vue官网查看配置
import { visualizer } from 'rollup-plugin-visualizer' // 项目打包构建大小分析插件
import viteCompression from 'vite-plugin-compression' //打包压缩插件,提升访问速度
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' // 基于 vite 的 svg 插件
import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    Components({
      dts: true, // ts类型引导支持
      resolvers: [AntDesignVueResolver()] // 自动导入antd组件
    }),
    visualizer({ gzipSize: true }), // 执行打包命令查看 root - stats.html
    viteCompression({ algorithm: 'gzip' }),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹目录
      iconDirs: [resolve(process.cwd(), 'src/assets/svgIcons')],
      // 指定symbolId格式
      symbolId: 'icon-[name]',
      //svgo额外配置，具体配置参考https://github.com/svg/svgo
      svgoOptions: {
        plugins: [
          {
            name: 'removeAttrs',
            params: { attrs: ['class', 'data-name', 'fill', 'stroke'] }
          }
        ]
      }
    })
  ],
  resolve: {
    // 配置路径别名
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    host: '0.0.0.0',
    port: 9527,
    cors: true
  }
})
